import router from "@/router";
import store from '@/store'
import {ACCESS_ENUM} from "@/access/accessEnum";
import {checkAccess} from "@/access/checkAccess";
// router.beforeEach(async (to, from, next) => {
//     let loginUser = store.state.user.user
//     console.log('loginUser',loginUser)
//
//     if(!loginUser || loginUser?.userRole===ACCESS_ENUM.NO_LOGIN){
//         //如果之前没登陆或登录信息失效  自动登录
//        await store.dispatch('user/getLoginUser','')
//         loginUser = store.state.user.user
//         if(loginUser==null || loginUser?.userRole===ACCESS_ENUM.NO_LOGIN){
//             next(`/user/login?redirect=${to.fullPath}`);
//             return ;
//         }
//     }
//     const needAccess =(to.meta?.access)?? ACCESS_ENUM.NO_LOGIN
//     //要跳转的页面需要登录
//     if(needAccess!==ACCESS_ENUM.NO_LOGIN){
//         //如果跳转的页面要登陆 但是又没有登录  跳转到登录页面
//         if(!loginUser || !loginUser?.userRole || loginUser?.userRole===ACCESS_ENUM.NO_LOGIN){
//             next(`/user/login?redirect=${to.fullPath}`);
//             return ;
//         }
//         //已经登录 但权限不足
//         if(to.meta?.access===ACCESS_ENUM.ADMIN ){
//             if(store?.state?.user?.user?.userRole!==ACCESS_ENUM.ADMIN){
//                 next({path:'/noAuth'})
//                 return;
//             }
//         }
//     }
//
//     next();
// })

router.beforeEach(async (to, from, next) => {
    console.log("登陆用户信息", store.state.user.user);
    let loginUser = store.state.user.user;
    // // 如果之前没登陆过，自动登录
    if (!loginUser || !loginUser.userRole || loginUser.userRole===ACCESS_ENUM.NO_LOGIN) {
        // 加 await 是为了等用户登录成功之后，再执行后续的代码
        await store.dispatch("user/getLoginUser");
        loginUser =store.state.user.user
        console.log('刷新后::',loginUser)

    }

    const needAccess = (to.meta?.access as string) ?? ACCESS_ENUM.NO_LOGIN;
    // 要跳转的页面必须要登陆
    if (needAccess !== ACCESS_ENUM.NO_LOGIN) {
        // 如果没登陆，跳转到登录页面
        if (!loginUser || !loginUser?.userRole || loginUser?.userRole===ACCESS_ENUM.NO_LOGIN) {
            next(`/user/login?redirect=${to.fullPath}`);
            return;
        }
        // 如果已经登陆了，但是权限不足，那么跳转到无权限页面
        console.log('checkAccess::',loginUser)
        if (!checkAccess(loginUser, needAccess)) {
            next("/noAuth");
            return;
        }
    }
    next();
});